home *** CD-ROM | disk | FTP | other *** search
/ BUG 1 / BUGCD1996_0708.ISO / pc / util / minilin / minilin.exe / USR / LOCAL / BIN / UTREE_MK.{_3 < prev    next >
Text File  |  1992-09-14  |  3KB  |  92 lines

  1. :
  2. #       UTREE.MKLIST.SH
  3. #       UTREE create tree directory list for quicker startup
  4. #       3.00-um klin, Sat Apr 20 11:27:17 1991
  5. #       Usage:          utree.mklist [-a]
  6. #       Options:        -a      Read in all (including hidden) directories
  7. #       Directory:      /usr/local/bin
  8. #
  9. #       Copyright (c) 1991 by Peter Klingebiel & UNIX Magazin Muenchen.
  10. #       For copying and distribution information see the file COPYRIGHT.
  11. #
  12. #       SCCSID=@(#) utree.mklist.sh (utree 3.00-um) Apr 20 1991
  13. #
  14. #
  15. #       Introduction of sort fields by Rolf Gebhardt
  16. #
  17. #       avoids funny sort orders, e.g.
  18. #
  19. #           /u/user/utree/utree.um
  20. #           /u/user/utree/utree.um.1
  21. #           /u/user/utree/utree.um.1/bin
  22. #           /u/user/utree/utree.um.1/doc
  23. #           /u/user/utree/utree.um/bin
  24. #           /u/user/utree/utree.um/doc
  25. #
  26. #       the right sort order, which represents the directory-tree, is
  27. #
  28. #           /u/user/utree/utree.um
  29. #           /u/user/utree/utree.um/bin
  30. #           /u/user/utree/utree.um/doc
  31. #           /u/user/utree/utree.um.1
  32. #           /u/user/utree/utree.um.1/bin
  33. #           /u/user/utree/utree.um.1/doc
  34. #
  35. #
  36. #
  37. LIST=$HOME/.utreelist           # List file
  38. FIELDS=""                       # Sort Field List generated below
  39.                                 # dependent on number of directory levels
  40.  
  41. if   test $# -eq 0              # Check option
  42. then
  43.   AFLAG=
  44. elif test $# -eq 1 -a "$1" = "-a"
  45. then
  46.   AFLAG=-a
  47. else
  48.   echo "Usage: utree.mklist [-a]"
  49.   exit 1
  50. fi
  51.  
  52.          # count the number of directory levels
  53.          # (to do it with 'awk' would be more elegant, but the method
  54.          #  used here is faster than 'awk')
  55.          #
  56.          # e.g. for '/u/user/wrk/bin/xxx' we get 5 slashes plus one \n,
  57.          # so 'wc' returns 6
  58.          # the number of fields to sort is 5
  59.          # sort field 0 is always empty
  60.  
  61. nofields=`find $HOME -type d -print | tr -cd "\012/" |\
  62.           sort -r | head -1 | wc -c | tr -d "\040\011"`
  63. nofields=`expr $nofields - 1`
  64.  
  65.          #  (debug statement)
  66.          #  echo "nofields = $nofields"
  67.          #
  68.          #  generate the sort-fields parameter for 'sort'
  69.          #
  70.  
  71. while [ $nofields -gt 1 ]
  72. do
  73.   FIELDS="-$nofields +$nofields $FIELDS"
  74.   nofields=`expr $nofields - 1`
  75. done
  76.  
  77. FIELDS="+1 $FIELDS"
  78.  
  79.          # (debug statements)
  80.          # echo "fields: $FIELDS"
  81.          # exit
  82.  
  83. echo "# utree tree list created at `date`" >$LIST
  84. if test "$AFLAG" = "-a"
  85. then
  86.   find $HOME -type d -print | sort -t/ $FIELDS >>$LIST
  87. else
  88.   find $HOME -type d -print | grep -v "/\." | sort -t/ $FIELDS >>$LIST
  89. fi
  90. exit 0
  91.  
  92.